home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / share / hplip / ui4 / aligndialog.py < prev    next >
Encoding:
Python Source  |  2009-04-14  |  26.3 KB  |  682 lines

  1. # -*- coding: utf-8 -*-
  2. #
  3. # (c) Copyright 2001-2008 Hewlett-Packard Development Company, L.P.
  4. #
  5. # This program is free software; you can redistribute it and/or modify
  6. # it under the terms of the GNU General Public License as published by
  7. # the Free Software Foundation; either version 2 of the License, or
  8. # (at your option) any later version.
  9. #
  10. # This program is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. # GNU General Public License for more details.
  14. #
  15. # You should have received a copy of the GNU General Public License
  16. # along with this program; if not, write to the Free Software
  17. # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  18. #
  19. # Authors: Don Welch
  20. #
  21.  
  22. # StdLib
  23. import operator
  24.  
  25. # Local
  26. from base.g import *
  27. from base import device, utils, maint, status
  28. #from prnt import cups
  29. from base.codes import *
  30. from ui_utils import *
  31.  
  32. # Qt
  33. from PyQt4.QtCore import *
  34. from PyQt4.QtGui import *
  35.  
  36. # Ui
  37. from aligndialog_base import Ui_Dialog
  38.  
  39. PAGE_START = 0
  40. PAGE_LOAD_PAPER = 1
  41. PAGE_EDGE = 2
  42. PAGE_ALIGNMENT_NUMBER = 3
  43. PAGE_COLOR_ADJ = 4 # types 4, 5 & 7
  44. PAGE_LBOW = 5 # types 10 & 11
  45. PAGE_AIO = 6 # Place on scanner, ...
  46. PAGE_FRONT_PANEL = 7 # Use front panel menu
  47.  
  48. BUTTON_ALIGN = 0
  49. BUTTON_NEXT = 1
  50. BUTTON_FINISH = 2
  51.  
  52. ALIGN_TYPE_INITIAL = 1000
  53. ALIGN_TYPE_TEST = 1001
  54.  
  55. # xBow offset types
  56. ALIGN_TYPE_XBOW_OFFSET = 100
  57. ALIGN_TYPE_XBOW_BLACK_ONLY = ALIGN_TYPE_XBOW_OFFSET + AGENT_CONFIG_BLACK_ONLY
  58. ALIGN_TYPE_XBOW_PHOTO_ONLY = ALIGN_TYPE_XBOW_OFFSET + AGENT_CONFIG_PHOTO_ONLY
  59. ALIGN_TYPE_XBOW_COLOR_ONLY =  ALIGN_TYPE_XBOW_OFFSET + AGENT_CONFIG_COLOR_ONLY
  60. ALIGN_TYPE_XBOW_COLOR_AND_BLACK =  ALIGN_TYPE_XBOW_OFFSET + AGENT_CONFIG_COLOR_AND_BLACK
  61. ALIGN_TYPE_XBOW_COLOR_AND_PHOTO = ALIGN_TYPE_XBOW_OFFSET + AGENT_CONFIG_COLOR_AND_PHOTO
  62.  
  63.  
  64. def true():
  65.     return True
  66.  
  67.  
  68. class AlignDialog(QDialog, Ui_Dialog):
  69.     def __init__(self, parent, device_uri):
  70.         QDialog.__init__(self, parent)
  71.         self.device_uri = device_uri
  72.         self.mq = {}
  73.         self.step_max = 0
  74.         self.align_type = ALIGN_TYPE_INITIAL
  75.         self.step = 1
  76.         self.a, self.b, self.c, self.d, self.zca = 0, 0, 0, 0, 0
  77.         self.e, self.f, self.g = 0, 0, 0
  78.         self.num_inks = 0 # type 8
  79.         self.pattern = 0 # type 10
  80.         self.values = [] # type 10
  81.         self.abort = False
  82.         self.seq_index = 0
  83.  
  84.         self.max_steps = {
  85.             ALIGN_TYPE_UNSUPPORTED : 1,
  86.             ALIGN_TYPE_AUTO : 2,
  87.             ALIGN_TYPE_9XX : 7,
  88.             ALIGN_TYPE_8XX : 6,
  89.             ALIGN_TYPE_LIDIL_0_3_8 : 0,
  90.             ALIGN_TYPE_LIDIL_0_4_3 : 0,
  91.             ALIGN_TYPE_LIDIL_AIO : 3,
  92.             ALIGN_TYPE_LIDIL_VIP : 0,
  93.             ALIGN_TYPE_DESKJET_450 : 0,
  94.             ALIGN_TYPE_9XX_NO_EDGE_ALIGN : 6,
  95.             ALIGN_TYPE_LBOW : 0,
  96.             ALIGN_TYPE_LIDIL_0_5_4 : 0,
  97.             ALIGN_TYPE_OJ_PRO : 0,
  98.             ALIGN_TYPE_TEST : 0,
  99.             ALIGN_TYPE_AIO : 3,
  100.             }
  101.  
  102.         self.seq = { # (func|method, tuple of params|None)
  103.             ALIGN_TYPE_TEST : [ # testing only
  104.                                (self.showColorAdjustPage, ('F', 21)),
  105.                                (self.endColorAdjustPage, ('F',)),
  106.                                (self.showColorAdjustPage, ('G', 11)),
  107.                                (self.endColorAdjustPage, ('G',)),
  108.                                (self.close, None),
  109.                             ],
  110.  
  111.             ALIGN_TYPE_INITIAL : [ # (used when starting up and align-type isn't known)
  112.                                (self.showStartPage, None),
  113.                                (self.endStartPage, None), # switch to a valid align-type here
  114.                             ],
  115.  
  116.             ALIGN_TYPE_UNSUPPORTED : [ # -1
  117.                                 (self.showFrontPanelPage, None),
  118.                                 (self.endFronPanelPage, None),
  119.                                 (self.close, None),
  120.                             ],
  121.             
  122. #            ALIGN_TYPE_NONE : [ # 0
  123. #                               (self.close, None)
  124. #                            ],
  125.  
  126.             ALIGN_TYPE_AUTO : [ # 1
  127.                                (self.showLoadPaperPage, None),
  128.                                (maint.AlignType1PML, (lambda : self.dev, lambda: true)),
  129.                                (self.close, None),
  130.                             ],
  131.  
  132.             ALIGN_TYPE_8XX : [ # 2
  133.                                 (self.checkType2PenConfig, None),
  134.                                 (self.showLoadPaperPage, None),
  135.                                 (maint.alignType2Phase1, (lambda: self.dev,)),
  136.                                 (self.showAlignmentNumberPage, ('A', 'h', 'kc', 2, 11)),
  137.                                 (self.endAlignmentNumberPage, ('A',)),
  138.                                 (self.showAlignmentNumberPage, ('B', 'v', 'kc', 2, 11)),
  139.                                 (self.endAlignmentNumberPage, ('B',)),
  140.                                 (self.showAlignmentNumberPage, ('C', 'v', 'kc', 2, 5)),
  141.                                 (self.endAlignmentNumberPage, ('C',)),
  142.                                 (self.setAlignButton, (BUTTON_ALIGN,)),
  143.                                 (self.showAlignmentNumberPage, ('D', 'v', 'c', 2, 5)),
  144.                                 (self.endAlignmentNumberPage, ('D',)),
  145.                                 (self.showLoadPaperPage, None),
  146.                                 (maint.alignType2Phase2, (lambda: self.dev, lambda: self.a, lambda: self.b,
  147.                                                           lambda: self.c, lambda: self.d)),
  148.                                 (self.close, None),
  149.                               ],
  150.  
  151.             ALIGN_TYPE_9XX : [  # 3
  152.                                 (self.showLoadPaperPage, None),
  153.                                 (self.showAlignmentNumberPage, ('A', 'h', 'kc', 2, 11)),
  154.                                 (self.endAlignmentNumberPage, ('A',)),
  155.                                 (self.showAlignmentNumberPage, ('B', 'v', 'kc', 2, 11)),
  156.                                 (self.endAlignmentNumberPage, ('B',)),
  157.                                 (self.showAlignmentNumberPage, ('C', 'v', 'k', 2, 11)),
  158.                                 (self.endAlignmentNumberPage, ('C',)),
  159.                                 (self.setAlignButton, (BUTTON_ALIGN,)),
  160.                                 (self.showAlignmentNumberPage, ('D', 'v', 'kc', 2, 11)),
  161.                                 (self.endAlignmentNumberPage, ('D',)),
  162.                                 (maint.alignType3Phase2, (lambda: self.dev, lambda: self.a, lambda: self.b,
  163.                                                           lambda: self.c, lambda: self.d)),
  164.                                 (maint.alignType3Phase3, (lambda: self.dev,)),
  165.                                 (self.showPageEdgePage, None),
  166.                                 (self.endPageEdgePage, None),
  167.                                 (maint.alignType3Phase4, (lambda: self.dev, lambda: self.zca)),
  168.                                 (self.close, None),
  169.                              ],
  170.  
  171.             ALIGN_TYPE_LIDIL_0_3_8 : [ # 4
  172.                                 (self.showLoadPaperPage, None),
  173.                                 (self.setPenConfig, None),
  174.                                 (maint.alignType4Phase1, (lambda: self.dev,)),
  175.                                 (self.setXBow, None),
  176.                                 # switches to offset align_type here
  177.                             ],
  178.  
  179.             ALIGN_TYPE_LIDIL_0_4_3 : [ # 5
  180.                                 (self.showLoadPaperPage, None),
  181.                                 (self.setPenConfig, None),
  182.                                 (maint.alignType5Phase1, (lambda: self.dev,)),
  183.                                 (self.showPageEdgePage, ('A',)),
  184.                                 (self.endPageEdgePage, None),
  185.                                 (self.setXBow, None),
  186.                                 # switches to offset align_type here
  187.                             ],
  188.  
  189.             ALIGN_TYPE_LIDIL_VIP : [ # 7
  190.                                 (self.showLoadPaperPage, None),
  191.                                 (self.setPenConfig, None),
  192.                                 (maint.alignType7Phase1, (lambda: self.dev,)),
  193.                                 (self.showPageEdgePage, ('A',)),
  194.                                 (self.endPageEdgePage, None),
  195.                                 (self.setXBow, None),
  196.                                 # switches to offset align_type here (next 5 types)
  197.                             ],
  198.  
  199.             # xBow offset alignment type
  200.             ALIGN_TYPE_XBOW_BLACK_ONLY : [ # 4, 5 & 7
  201.                             (self.showAlignmentNumberPage, ('B', 'v', 'k', 2, 11)),
  202.                             (self.endAlignmentNumberPage, ('B',)),
  203.                             (self.setXBowValues, None),
  204.                             (self.close, None),
  205.                             ],
  206.  
  207.             # xBow offset alignment type
  208.             ALIGN_TYPE_XBOW_PHOTO_ONLY : [ # 4, 5 & 7
  209.                             (self.showAlignmentNumberPage, ('B', 'v', 'k', 2, 11)),
  210.                             (self.endAlignmentNumberPage, ('B',)),
  211.                             (self.setXBowValues, None),
  212.                             (self.close, None),
  213.                             ],
  214.  
  215.             # xBow offset alignment type
  216.             ALIGN_TYPE_XBOW_COLOR_ONLY : [ # 4, 5 & 7
  217.                             (self.showAlignmentNumberPage, ('B', 'v', 'kc', 2, 11)),
  218.                             (self.endAlignmentNumberPage, ('B',)),
  219.                             (self.setXBowValues, None),
  220.                             (self.close, None),
  221.                             ],
  222.  
  223.             # xBow offset alignment type
  224.             ALIGN_TYPE_XBOW_COLOR_AND_BLACK : [ # 4, 5 & 7
  225.                             (self.showAlignmentNumberPage, ('B', 'h', 'kc', 2, 17)),
  226.                             (self.endAlignmentNumberPage, ('B',)),
  227.                             (self.showAlignmentNumberPage, ('C', 'v', 'kc', 2, 17)),
  228.                             (self.endAlignmentNumberPage, ('C',)),
  229.                             (self.showAlignmentNumberPage, ('D', 'v', 'k', 2, 11)),
  230.                             (self.endAlignmentNumberPage, ('D',)),
  231.                             (self.showAlignmentNumberPage, ('E', 'v', 'kc', 2, 11)),
  232.                             (self.endAlignmentNumberPage, ('E',)),
  233.                             (self.setXBowValues, None),
  234.                             (self.close, None),
  235.                             ],
  236.  
  237.             # xBow offset alignment type
  238.             ALIGN_TYPE_XBOW_COLOR_AND_PHOTO : [ # 4, 5 & 7
  239.                             (self.showAlignmentNumberPage, ('B', 'h', 'kc', 2, 17)),
  240.                             (self.endAlignmentNumberPage, ('B',)),
  241.                             (self.showAlignmentNumberPage, ('C', 'v', 'kc', 2, 17)),
  242.                             (self.endAlignmentNumberPage, ('C',)),
  243.                             (self.showAlignmentNumberPage, ('D', 'v', 'k', 2, 11)),
  244.                             (self.endAlignmentNumberPage, ('D',)),
  245.                             (self.showAlignmentNumberPage, ('E', 'v', 'kc', 2, 11)),
  246.                             (self.endAlignmentNumberPage, ('E',)),
  247.                             (self.showColorAdjustPage, ('F', 21)),
  248.                             (self.endColorAdjustPage, ('F',)),
  249.                             (self.showColorAdjustPage, ('G', 21)),
  250.                             (self.endColorAdjustPage, ('G',)),
  251.                             (self.setXBowValues, None),
  252.                             (self.close, None),
  253.                             ],
  254.  
  255.             ALIGN_TYPE_LIDIL_AIO : [ # 6 (semi-auto)
  256.                                 (self.showLoadPaperPage, None),
  257.                                 (maint.alignType6Phase1, (lambda: self.dev,)),
  258.                                 (self.setAlignButton, (BUTTON_FINISH,)),
  259.                                 (self.showAioPage, None),
  260.                                 (self.close, None),
  261.                             ],
  262.  
  263.             ALIGN_TYPE_DESKJET_450 : [ # 8
  264.                                 (self.showLoadPaperPage, None),
  265.                                 (self.alignType8Phase1, None), # sets num_inks
  266.                                 (self.showAlignmentNumberPage, ('A', 'v', 'k', 3, 9)),
  267.                                 (self.endAlignmentNumberPage, ('A',)),
  268.                                 (self.showAlignmentNumberPage, ('B', 'v', 'c', 3, 9)),
  269.                                 (self.endAlignmentNumberPage, ('B',)),
  270.                                 (self.showAlignmentNumberPage, ('C', 'v', 'kc', 3, 9)),
  271.                                 (self.endAlignmentNumberPage, ('C',)),
  272.                                 (self.setAlignButton, (BUTTON_ALIGN,)),
  273.                                 (self.showAlignmentNumberPage, ('D', 'h', 'kc', 3, 9)),
  274.                                 (self.endAlignmentNumberPage, ('D',)),
  275.                                 (maint.alignType3Phase2, (lambda: self.dev, lambda: self.num_inks, lambda: self.a,
  276.                                                           lambda: self.b, lambda: self.c, lambda: self.d)),
  277.                                 (self.close, None),
  278.                             ],
  279.  
  280.             ALIGN_TYPE_9XX_NO_EDGE_ALIGN : [  # 9
  281.                                 (self.showLoadPaperPage, None),
  282.                                 (self.showAlignmentNumberPage, ('A', 'h', 'kc', 2, 11)),
  283.                                 (self.endAlignmentNumberPage, ('A',)),
  284.                                 (self.showAlignmentNumberPage, ('B', 'v', 'kc', 2, 11)),
  285.                                 (self.endAlignmentNumberPage, ('B',)),
  286.                                 (self.showAlignmentNumberPage, ('C', 'v', 'k', 2, 11)),
  287.                                 (self.endAlignmentNumberPage, ('C',)),
  288.                                 (self.setAlignButton, (BUTTON_ALIGN,)),
  289.                                 (self.showAlignmentNumberPage, ('D', 'v', 'kc', 2, 11)),
  290.                                 (self.endAlignmentNumberPage, ('D',)),
  291.                                 (maint.alignType3Phase2, (lambda: self.dev, lambda: self.a, lambda: self.b,
  292.                                                           lambda: self.c, lambda: self.d)),
  293.                                 (self.close, None),
  294.                             ],
  295.  
  296.             ALIGN_TYPE_LBOW : [ # 10
  297.                                (self.showLoadPaperPage, None),
  298.                                (maint.alignType10Phase1, (lambda: self.dev,)),
  299.                                (self.setAlignButton, (BUTTON_ALIGN,)),
  300.                                (self.showLBowPage, (lambda: self.pattern,)),
  301.                                (self.endLBowPage, None), # sets values
  302.                                (maint.alignType10Phase2, (lambda: self.dev, lambda: self.values,
  303.                                                           lambda: self.pattern)),
  304.                                (self.setAlignButton, (BUTTON_FINISH,)),
  305.                                (self.showLoadPaperPage, None),
  306.                                (maint.alignType10Phase3, (lambda: self.dev,)),
  307.                                (self.close, None),
  308.                             ],
  309.  
  310.             ALIGN_TYPE_LIDIL_0_5_4 : [ # 11
  311.                                (self.showLoadPaperPage, None),
  312.                                (maint.alignType11Phase1, (lambda: self.dev,)),
  313.                                (self.setAlignButton, (BUTTON_ALIGN,)),
  314.                                (self.showLBowPage, (lambda: self.pattern,)),
  315.                                (self.endLBowPage, None), # sets values
  316.                                (maint.alignType11Phase2, (lambda: self.dev, lambda: self.values,
  317.                                                           lambda: self.pattern)),
  318.                                (self.setAlignButton, (BUTTON_FINISH,)),
  319.                                (self.showLoadPaperPage, None),
  320.                                (maint.alignType11Phase3, (lambda: self.dev,)),
  321.                                (self.close, None),
  322.                             ],
  323.  
  324.             ALIGN_TYPE_OJ_PRO : [ # 12
  325.                                 (self.showLoadPaperPage, None),
  326.                                 (maint.AlignType12, (lambda : self.dev, lambda: true)),
  327.                                 (self.close, None),
  328.                             ],
  329.  
  330.             ALIGN_TYPE_AIO : [ #13
  331.                               (self.showLoadPaperPage, None),
  332.                               (maint.alignType13Phase1, (lambda: self.dev,)),
  333.                               (self.setAlignButton, (BUTTON_FINISH,)),
  334.                               (self.showAioPage, None),
  335.                               (self.close, None),
  336.                             ],
  337.  
  338.  
  339.             }
  340.  
  341.         self.setupUi(self)
  342.         self.initUi()
  343.  
  344.         QTimer.singleShot(0, self.nextSequence)
  345.  
  346.  
  347.     def initUi(self):
  348.         # connect signals/slots
  349.         self.connect(self.CancelButton, SIGNAL("clicked()"), self.CancelButton_clicked)
  350.         self.connect(self.NextButton, SIGNAL("clicked()"), self.NextButton_clicked)
  351.         #self.connect(self.BackButton, SIGNAL("clicked()"), self.BackButton_clicked)
  352.         self.connect(self.DeviceComboBox, SIGNAL("DeviceUriComboBox_noDevices"), self.DeviceUriComboBox_noDevices)
  353.         self.connect(self.DeviceComboBox, SIGNAL("DeviceUriComboBox_currentChanged"), self.DeviceUriComboBox_currentChanged)
  354.         self.DeviceComboBox.setFilter({'align-type': (operator.gt, 0)})
  355.  
  356.         # Application icon
  357.         self.setWindowIcon(QIcon(load_pixmap('prog', '48x48')))
  358.  
  359.         if self.device_uri:
  360.             self.DeviceComboBox.setInitialDevice(self.device_uri)
  361.  
  362.  
  363.     def DeviceUriComboBox_noDevices(self):
  364.         FailureUI(self, self.__tr("<b>No devices that support print cartridge alignment found.</b><p>Click <i>OK</i> to exit.</p>"))
  365.         self.close()
  366.  
  367.  
  368.     def DeviceUriComboBox_currentChanged(self, device_uri):
  369.         self.device_uri = device_uri
  370.  
  371.  
  372.     def CancelButton_clicked(self):
  373.         self.close()
  374.  
  375.  
  376.     def NextButton_clicked(self):
  377.         self.nextSequence()
  378.  
  379.  
  380.     def nextSequence(self):
  381.         while True:
  382.             try:
  383.                 seq, params = self.seq[self.align_type][self.seq_index]
  384.             except IndexError:
  385.                 break
  386.  
  387.             if seq is None:
  388.                 self.seq_index += 1
  389.                 continue
  390.  
  391.             self.new_page = False
  392.  
  393.             t = []
  394.             if params is not None:
  395.                 for p in params:
  396.                     try:
  397.                         t.append(p())
  398.                     except:
  399.                         t.append(p)
  400.  
  401.             try:
  402.                 log.debug("%s(%s)" % (seq.func_name, ','.join([repr(x) for x in t])))
  403.             except AttributeError:
  404.                 pass
  405.  
  406.             try:
  407.                 seq(*t)
  408.             except Error:
  409.                 CheckDeviceUI(self)
  410.                 break
  411.  
  412.             self.seq_index += 1
  413.  
  414.             if self.new_page:
  415.                 break
  416.  
  417.             if self.abort:
  418.                 self.close()
  419.  
  420.  
  421.  
  422.     def showStartPage(self):
  423.         self.BackButton.setEnabled(False)
  424.         num_devices = self.DeviceComboBox.setDevices()
  425.  
  426.         if num_devices == 1:
  427.             self.skipPage()
  428.             return
  429.  
  430.         self.DeviceComboBox.updateUi()
  431.         self.displayPage(PAGE_START)
  432.  
  433.  
  434.     def endStartPage(self):
  435.         self.mq = device.queryModelByURI(self.device_uri)
  436.         self.align_type = self.mq.get('align-type', ALIGN_TYPE_NONE)
  437.         self.seq_index = -1
  438.  
  439.         #self.align_type = ALIGN_TYPE_TEST# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  440.  
  441.         log.debug("align-type=%d" % self.align_type)
  442.         self.step_max = self.max_steps[self.align_type]
  443.  
  444.         try:
  445.             self.dev = device.Device(self.device_uri)
  446.         except Error:
  447.             CheckDeviceUI(self)
  448.             return
  449.  
  450.  
  451.     def showLoadPaperPage(self):
  452.         self.LoadPaper.updateUi()
  453.         self.displayPage(PAGE_LOAD_PAPER)
  454.  
  455.  
  456.     def endLoadPaperPage(self):
  457.         pass
  458.  
  459.  
  460.     def showAlignmentNumberPage(self, line_id, orientation, colors, line_count, choice_count):
  461.         # line_id: 'A', 'B', etc.
  462.         # orientation: 'v' or 'h'
  463.         # colors: 'k' or 'c' or 'kc'
  464.         # line_count: 2 or 3
  465.         # choice_count: 5, 7, 9, 11, etc. (odd)
  466.         self.AlignmentNumberTitle.setText(self.__tr("Choose the set of lines in group %1 where the line segments are <b>best</b> aligned.").arg(line_id))
  467.         self.AlignmentNumberIcon.setPixmap(load_pixmap('%s-%s-%d' % (orientation, colors, line_count), 'other'))
  468.         self.AlignmentNumberComboBox.clear()
  469.  
  470.         for x in range(choice_count):
  471.             self.AlignmentNumberComboBox.addItem(QString("%1%2").arg(line_id).arg(x+1))
  472.  
  473.         self.displayPage(PAGE_ALIGNMENT_NUMBER)
  474.  
  475.  
  476.     def endAlignmentNumberPage(self, line_id):
  477.         v = int(str(self.AlignmentNumberComboBox.currentText())[1:])
  478.  
  479.         if line_id == 'A':
  480.             self.a = v
  481.             log.debug("A=%d" % v)
  482.  
  483.         elif line_id == 'B':
  484.             self.b = v
  485.             log.debug("B=%d" % v)
  486.  
  487.         elif line_id == 'C':
  488.             self.c = v
  489.             log.debug("C=%d" % v)
  490.  
  491.         elif line_id == 'D':
  492.             self.d = v
  493.             log.debug("D=%d" % v)
  494.  
  495.  
  496.     def showPageEdgePage(self, prefix=None, count=13):
  497.         self.PageEdgeTitle.setText(self.__tr("Choose the <b>numbered arrow</b> that <b>best </b>marks the edge of the paper."))
  498.         self.PageEdgeIcon.setPixmap(load_pixmap('zca.png', 'other'))
  499.  
  500.         self.PageEdgeComboBox.clear()
  501.         for x in range(count):
  502.             if prefix is None:
  503.                 self.PageEdgeComboBox.addItem(QString("%1").arg(x+1))
  504.             else:
  505.                 self.PageEdgeComboBox.addItem(QString("%1%2").arg(prefix).arg(x+1)) # for xBow
  506.  
  507.         self.displayPage(PAGE_EDGE)
  508.  
  509.  
  510.     def endPageEdgePage(self):
  511.         v = int(str(self.PageEdgeComboBox.currentText())[1:])
  512.         self.zca = v
  513.         log.debug("ZCA=%d" % v)
  514.  
  515.  
  516.     def showLBowPage(self, pattern):
  517.         self.LBowIcon.setPixmap(load_pixmap('align10', 'other'))
  518.  
  519.         if self.align_type == ALIGN_TYPE_LBOW:
  520.             pattern = maint.alignType10SetPattern(self.dev)
  521.  
  522.         else: # ALIGN_TYPE_LIDIL_0_5_4
  523.             pattern = maint.alignType11SetPattern(self.dev)
  524.  
  525.         if pattern is None:
  526.             log.error("Invalid pattern!")
  527.             # TODO: ...
  528.  
  529.         self.controls = maint.align10and11Controls(pattern, self.align_type)
  530.  
  531.         max_line = 'A'
  532.         for line in self.controls:
  533.             if self.controls[line][0]:
  534.                 max_line = line
  535.             else:
  536.                 break
  537.  
  538.         self.LBowTitle.setText(self.__tr("For each row A - %1, select the label representing the box in which in the inner lines are the <b>least</b> visible.").arg(max_line))
  539.  
  540.         for line in self.controls:
  541.             if not self.controls[line][0]:
  542.                 eval('self.%sComboBox%s.setEnabled(False)' % line.lower())
  543.             else:
  544.                 for x in range(self.controls[line][1]):
  545.                     eval('self.%sComboBox.addItem("%s%d")' % (line.lower(), line, x + 1))
  546.  
  547.         self.displayPage(PAGE_LBOW)
  548.  
  549.  
  550.  
  551.     def endLBowPage(self):
  552.         self.values = []
  553.         controls = self.controls.keys()
  554.         controls.sort()
  555.  
  556.         for line in controls:
  557.             if not self.controls[line][0]:
  558.                 ret.append(0)
  559.             else:
  560.                 exec('selected = unicode(self.%sComboBox.currentText())' % line.lower())
  561.                 try:
  562.                     selected = int(selected[1:])
  563.                 except ValueError:
  564.                     selected = 0
  565.  
  566.                 self.values.append(selected)
  567.  
  568.  
  569.     def showAioPage(self):
  570.         self.AioIcon.setPixmap(load_pixmap('aio_align', 'other'))
  571.         self.displayPage(PAGE_AIO)
  572.  
  573.  
  574.     def endAioPage(self):
  575.         pass
  576.  
  577.  
  578.     def showColorAdjustPage(self, line_id, count=21):
  579.         self.ColorAdjustComboBox.clear()
  580.         self.ColorAdjustIcon.setPixmap(load_pixmap('color_adj', 'other'))
  581.         self.ColorAdjustLabel.setText(self.__tr("Line %1:").arg(line_id))
  582.  
  583.         for x in range(count):
  584.             self.ColorAdjustComboBox.addItem(QString("%1%2").arg(line_id).arg(x+1))
  585.  
  586.         self.displayPage(PAGE_COLOR_ADJ)
  587.  
  588.  
  589.     def endColorAdjustPage(self, line_id):
  590.         v = int(str(self.ColorAdjustComboBox.currentText())[1:])
  591.  
  592.         if line_id == 'F':
  593.             self.f = v
  594.             log.debug("F=%d" % v)
  595.  
  596.         elif line_id == 'G':
  597.             self.g = v
  598.             log.debug("G=%d" % v)
  599.  
  600.  
  601.     def showFrontPanelPage(self):
  602.         self.BackButton.setEnabled(False)
  603.         self.setAlignButton(BUTTON_FINISH)
  604.         self.displayPage(PAGE_FRONT_PANEL)
  605.         
  606.         
  607.     def endFronPanelPage(self):
  608.         pass
  609.  
  610.     #
  611.     #  ALIGN-TYPE SPECIFIC
  612.     #
  613.  
  614.     def checkType2PenConfig(self):
  615.         pass
  616.         # TODO: set abort if problem
  617.  
  618.  
  619.     def alignType8Phase1(self):
  620.         self.num_inks = maint.alignType8Phase1(self.dev)
  621.  
  622.  
  623.     def setXBow(self):
  624.         # TODO: set abort if invalid pen config
  625.         self.real_align_type = self.align_type
  626.         self.align_type = ALIGN_TYPE_XBOW_OFFSET + self.dev.pen_config
  627.         self.seq_index = -1
  628.  
  629.  
  630.     def setXBowValues(self):
  631.         if self.real_align_type ==  ALIGN_TYPE_LIDIL_0_3_8:
  632.             maint.alignType4Phase2(self.dev, self.zca, self.b, self.c, self.d, self.e)
  633.             maint.alignType4Phase3(self.dev)
  634.  
  635.         elif self.real_align_type == ALIGN_TYPE_LIDIL_0_4_3:
  636.             maint.alignType5Phase2(self.dev, self.zca, self.b, self.c, self.d, self.e, self.f, self.g)
  637.             maint.alignType5Phase3(self.dev)
  638.  
  639.         elif self.real_align_type == ALIGN_TYPE_LIDIL_VIP:
  640.             maint.alignType7Phase2(self.dev, self.zca, self.b, self.c, self.d, self.e, self.f, self.g)
  641.             maint.alignType7Phase3(self.dev)
  642.  
  643.  
  644.     #
  645.     # Misc
  646.     #
  647.  
  648.     def displayPage(self, page):
  649.         self.updateStepText(self.step)
  650.         self.step += 1
  651.         self.new_page = True
  652.         self.StackedWidget.setCurrentIndex(page)
  653.  
  654.  
  655.     def skipPage(self):
  656.         self.step += 1
  657.         self.new_page = False
  658.  
  659.  
  660.     def updateStepText(self, p=None):
  661.         if p is None or not self.step_max:
  662.             self.StepText.setText(QString(""))
  663.         else:
  664.             self.StepText.setText(self.__tr("Step %1 of %2").arg(p).arg(self.step_max))
  665.  
  666.  
  667.     def setAlignButton(self, typ=BUTTON_ALIGN):
  668.         if typ == BUTTON_ALIGN:
  669.             self.NextButton.setText(self.__tr("Align"))
  670.         elif typ == BUTTON_NEXT:
  671.             self.NextButton.setText(self.__tr("Next >"))
  672.         elif typ == BUTTON_FINISH:
  673.             self.NextButton.setText(self.__tr("Finish"))
  674.  
  675.  
  676.     def setPenConfig(self):
  677.         self.dev.pen_config = status.getPenConfiguration(self.dev.getStatusFromDeviceID())
  678.  
  679.  
  680.     def __tr(self,s,c = None):
  681.         return qApp.translate("AlignDialog",s,c)
  682.